package com.zpark.oop.day06;

/**
 *      成员内部类：成员内部类是类内部的非静态类。成员内部类不能定义静态方法和变量（final修饰的
 * 除外）。这是因为成员内部类是非静态的，类初始化的时候先初始化静态成员，如果允许成员内部类定义静态
 * 变量，那么成员内部类的静态变量初始化顺序是有歧义的。
 */
public class OuterDemo01 {

    String address;
    static double salary;
    int age;

    // 成员内部类
    public class InnerDemo01{
        final String name;

        String address;

        public InnerDemo01(){
            name = "zpark";
        }

        public void show(){
            // 在内部类的方法当中使用外部类的属性
            new OuterDemo01().address = "北京";
            OuterDemo01.salary = 10000;
            // 内部类可以直接访问外部类的成员
            age = 18;
            System.out.println("成员内部类的 name:" + name);
        }
    }

    private class InnerDemo02{}
}
